package com.molan.molan_music.service;

import com.molan.molan_music.dto.TokenCreateRequest;
import com.molan.molan_music.dto.UserCreateRequest;
import com.molan.molan_music.dto.UserDto;
import com.molan.molan_music.dto.UserUpdateRequest;
import com.molan.molan_music.entity.Role;
import com.molan.molan_music.entity.User;
import com.molan.molan_music.vo.pageVo.PageRequestVo;
import com.molan.molan_music.vo.pageVo.PageResultVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;

public interface UserService extends UserDetailsService {
    PageResultVo search(PageRequestVo pageQuery);

    UserDto addUser(UserCreateRequest userCreateDto);

    @Override
    User loadUserByUsername(String username);

    UserDto getUserById(String id);

    UserDto updateUser(String id, UserUpdateRequest userUpdateRequest);

    int deleteUser(String id);

    String tokenCreate(TokenCreateRequest tokenCreateRequest);

    UserDto getCurrentUser();

    List<Role> getauThorities(String username);
}
